package dk.viauc.cmclang.intlang.ast;

public interface Visitor {

	Object visitProgram(Program program, Object arg);

	Object visitBlock(Block block, Object arg);

	Object visitFunctionDeclaration(FunctionDeclaration functionDeclaration,
			Object arg);

	Object visitIdentifier(Identifier identifier, Object arg);

	Object visitType(Type type, Object arg);

	Object visitDeclarationList(DeclarationList declarationList, Object arg);

	Object visitStatementList(StatementList statementList, Object arg);

	Object visitVariableDeclaration(VariableDeclaration variableDeclaration,
			Object arg);

	Object visitArrayGetExpression(ArrayGetExpression arrayGetExpression,
			Object arg);

	Object visitBinaryExpression(BinaryExpression binaryExpression, Object arg);

	Object visitBoolLiteral(BoolLiteral boolLiteral, Object arg);

	Object visitBoolLitExpression(BoolLitExpression boolLitExpression,
			Object arg);

	Object visitDecsStatement(DecsStatement decsStatement, Object arg);

	Object visitCallExpression(CallExpression callExpression, Object arg);

	Object visitExpList(ExpList expList, Object arg);

	Object visitExpressionStatement(ExpressionStatement expressionStatement,
			Object arg);


	Object visitIfStatement(IfStatement ifStatement, Object arg);

	Object visitIntegerLiteral(IntegerLiteral integerLiteral, Object arg);

	Object visitIntLiteralList(IntLiteralList intLiteralList, Object arg);

	Object visitIntLitExpression(IntLitExpression intLitExpression, Object arg);

	Object visitOperator(Operator operator, Object arg);

	Object visitReadStatement(ReadStatement readStatement, Object arg);

	Object visitReturnStatement(ReturnStatement returnStatement, Object arg);

	Object visitStatements(Statements statements, Object arg);

	Object visitVarExpression(VarExpression varExpression, Object arg);

	Object visitWhileStatement(WhileStatement whileStatement, Object arg);

	Object visitWriteStatement(WriteStatament writeStatament, Object arg);

}
